package com.jh.fcsm.service.sys;

import com.github.pagehelper.PageInfo;
import com.jh.fcsm.beans.sys.SysUserRole;
import com.jh.fcsm.beans.sys.vo.SysUserInfoVO;
import com.jh.fcsm.common.BaseService;
import com.jh.fcsm.common.exception.ServiceException;

import java.util.List;

/**
 * 用户角色service
 *
 * @author szx
 * @date 2018/03/12
 */
public interface UserRoleService extends BaseService<SysUserRole> {

    /**
     * 保存或更新用户角色
     *
     * @param sysRole
     * @return
     */
    void saveOrUpdateUserRole(String userId, String[] roleIds) throws ServiceException;

    /**
     * 查询用户角色列表
     *
     * @return
     */
    List<SysUserRole> list(String userId);

    /**
     * 根据角色编码查询同一个城市公司下的用户角色列表
     *
     * @return
     */
    List<SysUserRole> listByRoleCode(String roleCode);

    /**
     * 根据角色编码查询同一个城市公司下的用户角色列表
     *
     * @return
     */
    PageInfo<SysUserInfoVO> pageByRoleCodeAndName(Integer pageNum, Integer pageSize, String roleCode, String userName);

    /**
     * 根据角色id删除关联信息
     *
     * @return
     */
    void deleteByRoleId(String roleId);

    /**
     * 根据用户id删除关联信息
     *
     * @return
     */
    void deleteByUserId(String userId);

    /**
     * 根据角色id用户id删除关联信息
     *
     * @return
     */
    void deleteByRoleIdAndUserId(String roleId, String userId);

    /**
     * 暂停开启用户角色权限
     *
     * @return
     */
    void swtichStatus(String roleId, String userId, String status);

    /**
     * 用户下添加角色
     *
     * @param userId
     * @param roleIds
     */
    void saveOrUpdateRole(String userId, List<String> roleIds);
}
